home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Atari Mega Archive 1
/
Atari Mega Archive - Volume 1.iso
/
archiver
/
lzhsourc.lzh
/
LZH.SRC
/
LH5.H
< prev
next >
Wrap
C/C++ Source or Header
|
1992-07-02
|
2KB
|
72 lines
/***********************************************************
lh5.h
***********************************************************/
#include <stdio.h>
#include <limits.h>
typedef unsigned char uchar; /* 8 bits or more */
typedef unsigned int uint; /* 16 bits or more */
typedef unsigned short ushort; /* 16 bits or more */
typedef unsigned long ulong; /* 32 bits or more */
/* ar.c */
extern int unpackable;
extern ulong origsize, compsize;
/* io.c */
#define INIT_CRC 0 /* CCITT: 0xFFFF */
extern FILE *arcfile, *infile, *outfile;
extern uint crc, bitbuf;
#define BITBUFSIZ (CHAR_BIT * sizeof bitbuf)
void error(char *fmt, ...);
void make_crctable(void);
void fillbuf(int n);
uint getbits(int n);
/* void putbit(int bit); */
void putbits(int n, uint x);
int fread_crc(uchar *p, int n, FILE *f);
void fwrite_crc(uchar *p, int n, FILE *f);
void init_getbits(void);
void init_putbits(void);
/* encode.c and decode.c */
#define DICBIT 13 /* 12(-lh4-) or 13(-lh5-) */
#define DICSIZ (1U << DICBIT)
#define MATCHBIT 8 /* bits for MAXMATCH - THRESHOLD */
#define MAXMATCH 256 /* formerly F (not more than UCHAR_MAX + 1) */
#define THRESHOLD 3 /* choose optimal value */
#define PERC_FLAG 0x8000U
ulong encode5(ulong orgsize);
void decode_start(void);
void decode5(uint count, uchar text[]);
/* huf.c */
#define NC (UCHAR_MAX + MAXMATCH + 2 - THRESHOLD)
/* alphabet = {0, 1, 2, ..., NC - 1} */
#define CBIT 9 /* $\lfloor \log_2 NC \rfloor + 1$ */
#define CODE_BIT 16 /* codeword length */
extern ushort left[], right[];
void huf_encode_start(void);
void huf_decode_start(void);
uint decode_c(void);
uint decode_p(void);
void output(uint c, uint p);
void huf_encode_end(void);
/* maketbl.c */
void make_table(int nchar, uchar bitlen[],
int tablebits, ushort table[]);
/* maketree.c */
int make_tree(int nparm, ushort freqparm[],
uchar lenparm[], ushort codeparm[]);